home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 4 / PC World Interactive 4.iso / online / appbar.EXE / cppsrc / NewMenu.cpp < prev    next >
C/C++ Source or Header  |  1996-08-31  |  3KB  |  99 lines

  1. // *********************************************************
  2. // AppBar -- Advanced Menu bar for Windows 95/NT
  3. // All code Copyright (C) 1995, 1996 by Mike Perham
  4. // mperham@cs.cornell.edu
  5. // 
  6. // This code MAY NOT be used for any other program without
  7. // my permission and is forbidden in any shareware/commercial
  8. // program.  This code is provided for educational use only
  9. // and there are no guarantees or promises implied.  Blah blah
  10. // *********************************************************
  11.  
  12. // NewMenu.cpp : implementation file
  13. //
  14.  
  15. #include "appbar.h"
  16. #include "globals.h"
  17.  
  18. #ifdef _DEBUG
  19. #define new DEBUG_NEW
  20. #undef THIS_FILE
  21. static char THIS_FILE[] = __FILE__;
  22. #endif
  23.  
  24. /////////////////////////////////////////////////////////////////////////////
  25. // NewMenu dialog
  26.  
  27.  
  28. NewMenu::NewMenu(CWnd* pParent /*=NULL*/, hack *ph)
  29.     : CDialog(NewMenu::IDD, pParent)
  30. {
  31.     //{{AFX_DATA_INIT(NewMenu)
  32.         // NOTE: the ClassWizard will add member initialization here
  33.     //}}AFX_DATA_INIT
  34.     phack = ph;
  35.     isnew = NULL;
  36.     parent = pParent;
  37. }
  38.  
  39. void inline NewMenu::ab_message(char *msg)
  40. {
  41.     MessageBox(msg, "AppBar", MB_OK | MB_ICONINFORMATION);
  42. }
  43.  
  44. BEGIN_MESSAGE_MAP(NewMenu, CDialog)
  45.     //{{AFX_MSG_MAP(NewMenu)
  46.     //}}AFX_MSG_MAP
  47. END_MESSAGE_MAP()
  48.  
  49. /////////////////////////////////////////////////////////////////////////////
  50. // NewMenu message handlers
  51.  
  52. void NewMenu::OnOK() 
  53. {
  54.     char buffer[30];
  55.  
  56.     GetDlgItem(IDC_MENUNAME)->SendMessage(WM_GETTEXT, sizeof(buffer), (LPARAM)buffer);
  57.     if (!strcmp(buffer,"")) {
  58.         ab_message(ERROR_MENUNAME);
  59.         return;
  60.     }
  61.     strcpy(newmenu->menuname, buffer);
  62.     if (!isnew) {
  63.         parent->SendDlgItemMessage(IDC_MENULIST, LB_DELETESTRING, index, 0);
  64.         parent->SendDlgItemMessage(IDC_MENULIST, LB_INSERTSTRING, index, (LPARAM) (LPCSTR)newmenu->menuname);
  65.       } else
  66.         parent->SendDlgItemMessage(IDC_MENULIST, LB_INSERTSTRING, (WPARAM)-1, (LPARAM) (LPCSTR)newmenu->menuname);
  67.     CDialog::OnOK();
  68. }
  69.  
  70. BOOL NewMenu::OnInitDialog() 
  71. {
  72.     CDialog::OnInitDialog();
  73.  
  74.     newmenu = phack->menu;
  75.     isnew = phack->isnew;
  76.     if (isnew)
  77.         if (newmenu) {
  78.             newmenu->nextmenu = new menu_struct;
  79.             newmenu->nextmenu->prevmenu = newmenu;
  80.             newmenu = newmenu->nextmenu;
  81.           } else {
  82.             glob_menu = new menu_struct;
  83.             newmenu = glob_menu;
  84.         }
  85.     GetDlgItem(IDC_MENUNAME)->SetFocus();
  86.     GetDlgItem(IDC_MENUNAME)->SendMessage(WM_SETTEXT, 0, (LPARAM)newmenu->menuname);
  87.     index = parent->SendDlgItemMessage(IDC_MENULIST, LB_GETCURSEL, 0, 0);
  88.     return FALSE;
  89. }
  90.  
  91. void NewMenu::OnCancel() 
  92. {
  93.     if (isnew) {
  94.         delete newmenu;
  95.         phack->menu->nextmenu = NULL;
  96.     }
  97.     CDialog::OnCancel();
  98. }
  99.